#include <iostream>
using namespace std;
enum note
{
    middle,
    sharp,
    flat
};
class Instrument
{
public:
    virtual void play(note) const = 0;
    virtual const char *what() const = 0;
    virtual void adjust(int) = 0;
};

class Wind : public Instrument
{
public:
    void play(note) const
    {
        cout << "Wind::play()" << endl;
    };
    const char *what() const
    {
        return "Wind";
    }
    void adjust(int)
    {
    }
};

class Percussion : public Instrument
{
public:
    void play(note) const
    {
        cout << "Percussion::play()" << endl;
    };
    const char *what() const
    {
        return "Percussion";
    }
    void adjust(int)
    {
    }
};

class Brass : public Wind
{
public:
    void play(note) const
    {
        cout << "Brass::play()" << endl;
    };
    const char *what() const
    {
        return "Brass";
    }
};

class Woodwind : public Wind
{
public:
    void play(note) const
    {
        cout << "Woodwind::play()" << endl;
    };
    const char *what() const
    {
        return "Woodwind";
    }
};
